package Day21.Stream;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day20.Consumer
 * @Author:hyhWTX
 * @ClassName:Demo03Stream_filter
 * @CreateTime:2022年-10月-18日 22:44
 * @Description: TODO (一句话描述以下该类的功能)
 */

import java.util.stream.Stream;

/***
 *
 * @author hyhWTX
 * @date 2022/10/18 22:45
 * @param:
 * Stream流中的常用方法_filter:用于对Stream流中的数据进行过滤
 * Stream<T>filter(Predicate<? super T> predicate);
 * filter方法的参数Predicate是一个函数式接口,所以可以传递Lambda表达式,对数据进行过滤
 * Predicate中的抽象方法:
 *      boolean test(T t);

 */
public class Demo03Stream_filter {
    public static void main(String[] args) {
        //创建一个Stream流
        Stream<String> stream = Stream.of("张三","李四","王五");
        //对stream流中的元素进行过滤，只要姓张的人
        Stream<String> stream1 = stream.filter((String name)->{return name.startsWith("张");});
        //遍历一下stream1
        stream1.forEach(name -> System.out.println(name));

        /***
         *
         * @author hyhWTX
         * @date 2022/10/18 22:57
         * @param args
         总结：
         Stream流属于管道流，只能被消费（使用）一次
         第一个Stream流调用完毕方法，数据就会流转到下一个Stream上
         而这时第一个Stream流已经使用完毕，就会关闭了
         所以第一个Stream流就不能再调用方法了。
         */
    }
}
